A network switch receives data packets on a first set of ports, or source ports, and transmits the received data packets from a second set of ports, or destination ports, based on destination information included in each packet. Each network switch temporarily stores packets of data received on its respective source ports until the switch can determine a destination port that the packet should be directed to and until the determined destination port is ready to transmit the packet via an external media, e.g., a network cable, an optical fiber cable, a radio frequency, etc.
Class of Service (CoS) management manages traffic in a network by grouping similar types of traffic (for example, e-mail, streaming video, voice, large document file transfer) together and treating each type of traffic as a class with its own level of service priority. Class of service technologies do not guarantee a level of service in terms of bandwidth and delivery time, rather, class of service technologies merely assure that traffic assigned a higher class of service is provided priority treatment, over traffic assigned a lower class of service, with respect to the allocation of shared resources required to transmit the higher class of service traffic to its intended destination.
A network switch may support multiple classes of service for traffic received on each source port and may be capable of delivering data received on a network switch source port to any one of the network switch destination ports. To accomplish these tasks and to avoid traffic congestion within the network switch due to head of line (HOL) blocking, described below, a network switch may maintain a set of virtual output queues, or queue set, for each class of service supported by each network switch source port. Each queue set may include a virtual output queue for each destination port supported by the network switch. For example, assuming a one-to-one, or linear, mapping of class of service virtual output queues to destination ports, a network switch with 48 destination ports and 36 source ports, each source port supporting 4 classes of service, would be required to maintain 48×36×4=6912 virtual output queues.
Head of Line (HOL) blocking can occur in network switches that do not provide a linear mapping of class of service virtual output queues to destination ports. The ratio of destination ports to the number of source port virtual queues provided for a class of service supported by a source port may be referred to as the HOL blocking factor for that source port class of service. For example, assuming that a network switch includes 48 destination ports and each source port has 48 virtual output queues assigned to a class of service supported by the source port, the HOL blocking factor for that source port class of service is 1.0. However, assuming that a network switch includes 48 destination ports and each source port has 36 virtual output queues assigned to a class of service supported by the source port, the HOL blocking factor for that source port class of service is 1.5. The greater the HOL blocking factor, the greater the likelihood that HOL blocking may occur.
For example, a network source port class of service that has an HOL blocking factor greater than 1 may experience HOL blocking during periods of heavy network traffic. For example, during periods of heavy network traffic, all the virtual output queues in a queue set that supports a source port class of service may be assigned a packet. Therefore, queues that have already been assigned a first packet may be assigned subsequent packets that are destined for various destination ports. If a packet at the head of the queue is destined for a destination port that is unable to remove a packet from the queue in a timely manner, e.g., due to down-stream network congestion, the other packets in the queue, e.g., destined for destination ports that are not affected by down-stream network congestion, will remain trapped in the queue blocked by the packet at the head of the line in the queue, hence the name, head of line (HOL) blocking.